﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Net.Mail;
using System.Net;

namespace Lab9_Mailling
{
    public partial class Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if ((Request.QueryString["server_mail"] == null || Request.QueryString["server_mail"] == "") || (Request.QueryString["port"] == null || Request.QueryString["port"] == "") || (Request.QueryString["email"] == null || Request.QueryString["email"] == "") || (Request.QueryString["password"] == null || Request.QueryString["password"] == ""))
            {
                Response.Redirect("MailConfig.aspx");
            }
            else
            {
                txtFrom.Value = Request.QueryString["email"];
            }
        }

        protected void cmdSubmit_Click(object sender, EventArgs e)
        {
            string sTo = txtTo.Value;
            if (sTo.Equals(""))
            {
                lblError.Text = "Chưa nhập địa chỉ Email Đến...";
                return;
            }
            string sFrom = txtFrom.Value;
            if (sFrom.Equals(""))
            {
                lblError.Text = "Chưa nhập địa chỉ Email Gửi...";
                return;
            }
            string sSubject = txtSubject.Value;
            if (sSubject.Equals(""))
            {
                lblError.Text = "Chưa nhập Tiêu Đề mail...";
                return;
            }
            string sBody = CKEditor1.Text;
            if (sBody.Equals(""))
            {
                lblError.Text = "Chưa nhập Nội Dung mail...";
                return;
            }
            //string sFileName = string.Empty;
            string server = Request.QueryString["server_mail"];
            //server = "smtp.gmail.com";
            string port = Request.QueryString["port"];
            string user = Request.QueryString["email"];
            string pass = Request.QueryString["password"];

            //sTo = sTo.Trim();
            sTo = sTo.Replace(",", ";");
            String[] addr = sTo.Split(';');// Danh sach mail nhan
            System.Net.Mail.SmtpClient smtp = new SmtpClient();
            System.Net.Mail.MailMessage msg = new MailMessage();
            msg.IsBodyHtml = true;
            smtp.Port = Int32.Parse(port);
            smtp.EnableSsl = true;//chứng thực việc gửi mail
            //smtp.Host = "smtp.gmail.com";//Sử dụng SMTP của gmail 
            smtp.Host = server;
            smtp.Credentials = new NetworkCredential(user, pass);//user name , password cua mail gui
            try
            {
                if (sFrom.Length > 0 && sTo.Length > 0 && sSubject.Length > 0 && sBody.Length >= 0)
                {
                    System.Text.RegularExpressions.Regex regex = new System.Text.RegularExpressions.Regex(@"\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*");//kiem tra tinh hop le cua mail
                    msg.From = new MailAddress(sFrom, "Hệ thống mail gửi tự động từ Lab9 TMĐT", System.Text.Encoding.UTF8);
                    Byte i;
                    for (i = 0; i < addr.Length; i++)
                    {
                        bool result = regex.IsMatch(addr[i]);
                        if (result == false)
                        {
                            lblError.Visible = true;
                            lblError.Text = "Địa chỉ email nhận:" + sTo + " không hợp lệ.";
                        }
                        else
                        {
                            addr[i] = addr[i].Trim();
                            msg.To.Add(addr[i]);
                            msg.Subject = sSubject;
                            msg.Body = sBody;
                            msg.DeliveryNotificationOptions = DeliveryNotificationOptions.OnFailure;
                            msg.ReplyTo = new MailAddress(addr[i]);
                            smtp.Send(msg);
                            lblError.Text = "Email đã được gửi thành công đến: " + sTo + ".";
                            lblError.Visible = true;
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                lblError.Visible = true;
                lblError.Text = ex.ToString();
            }
        }

    }
}